ZeroMQ Socket প্রকারভেদ: PUSH, PULL, PUB, SUB, REQ, REP

Latest Technologies - জিরো এমকিউ (ZeroMQ) - ZeroMQ Sockets এবং তাদের প্রকারভেদ
146

ZeroMQ সকার বিভিন্ন প্রকারভেদে বিভক্ত, যা ডেভেলপারদের বিভিন্ন মেসেজিং প্যাটার্ন বাস্তবায়ন করতে সহায়ক। ZeroMQ-এর প্রতিটি সকার প্রকার নির্দিষ্ট মেসেজিং প্যাটার্ন অনুসারে কাজ করে এবং ডিস্ট্রিবিউটেড সিস্টেম ও অ্যাপ্লিকেশন তৈরি করতে কার্যকরী। নিচে ZeroMQ সকারের প্রধান প্রকারগুলো এবং তাদের কার্যকারিতা নিয়ে আলোচনা করা হলো:

১. PUSH-PULL সকার

PUSH-PULL সকার প্যাটার্ন সাধারণত ওয়ার্ক লোড ডিস্ট্রিবিউশন এবং টাস্ক প্যারালেলাইজেশন এর জন্য ব্যবহৃত হয়।

PUSH সকার:

  • এটি একটি প্রোডিউসার হিসেবে কাজ করে, যা মেসেজ পাঠায়।
  • PUSH সকার পুল সকারের কাছে মেসেজ পাঠায়, কিন্তু এটি মেসেজ গ্রহণ করতে পারে না।
  • এটি সাধারণত একটি ওয়ার্কার প্যাটার্নে ব্যবহার করা হয়, যেখানে PUSH সকার কাজ বা টাস্ক পাঠায় এবং একাধিক পুল সকার সেই কাজ গ্রহণ করে।

PULL সকার:

  • এটি একটি কনসিউমার হিসেবে কাজ করে, যা মেসেজ গ্রহণ করে।
  • PULL সকার কেবল মেসেজ গ্রহণ করতে পারে, এটি মেসেজ পাঠাতে পারে না।
  • সাধারণত PULL সকার PUSH সকার থেকে টাস্ক গ্রহণ করে এবং প্রক্রিয়া করে।

PUSH-PULL উদাহরণ (Python):

import zmq

# PUSH সকার
context = zmq.Context()
push_socket = context.socket(zmq.PUSH)
push_socket.bind("tcp://*:5555")

for i in range(10):
    push_socket.send_string(f"Task {i}")
# PULL সকার
context = zmq.Context()
pull_socket = context.socket(zmq.PULL)
pull_socket.connect("tcp://localhost:5555")

while True:
    message = pull_socket.recv_string()
    print(f"Received: {message}")

২. PUB-SUB সকার

PUB-SUB সকার প্যাটার্ন সাধারণত মাল্টিকাস্ট মেসেজিং এর জন্য ব্যবহৃত হয়। এটি এমন একটি প্যাটার্ন যেখানে একটি প্রকাশক (Publisher) একাধিক গ্রাহক (Subscriber) এর কাছে মেসেজ পাঠাতে পারে।

PUB (Publisher) সকার:

  • এটি একটি মেসেজ পাঠানোর জন্য কাজ করে। এটি এক বা একাধিক সাবস্ক্রাইবারদের কাছে মেসেজ পাঠায়।
  • PUB সকার মেসেজ পাঠায়, কিন্তু মেসেজ গ্রহণ করতে পারে না।
  • এক বা একাধিক সাবস্ক্রাইবার এই প্রকাশকের সাথে সংযুক্ত থাকতে পারে।

SUB (Subscriber) সকার:

  • এটি একটি মেসেজ গ্রহণকারী হিসেবে কাজ করে। এটি প্রকাশকের কাছ থেকে মেসেজ গ্রহণ করে।
  • SUB সকার মেসেজ গ্রহণ করতে পারে, কিন্তু মেসেজ পাঠাতে পারে না।
  • SUB সকার নির্দিষ্ট টপিক বা চ্যানেল সাবস্ক্রাইব করতে পারে এবং শুধুমাত্র সেই টপিকের মেসেজ গ্রহণ করতে পারে।

PUB-SUB উদাহরণ (Python):

# Publisher সকার
context = zmq.Context()
pub_socket = context.socket(zmq.PUB)
pub_socket.bind("tcp://*:5556")

while True:
    pub_socket.send_string("topic1 Hello, this is a message!")
# Subscriber সকার
context = zmq.Context()
sub_socket = context.socket(zmq.SUB)
sub_socket.connect("tcp://localhost:5556")
sub_socket.setsockopt_string(zmq.SUBSCRIBE, "topic1")  # টপিক সাবস্ক্রাইব করা

while True:
    message = sub_socket.recv_string()
    print(f"Received: {message}")

৩. REQ-REP সকার

REQ-REP (Request-Reply) সকার প্যাটার্ন ক্লায়েন্ট-সার্ভার মডেলের জন্য আদর্শ।

REQ (Request) সকার:

  • এটি ক্লায়েন্ট হিসেবে কাজ করে, যা মেসেজ পাঠায় এবং উত্তর প্রত্যাশা করে।
  • REQ সকার মেসেজ পাঠানোর পর মেসেজের উত্তর পাওয়ার জন্য অপেক্ষা করে।

REP (Reply) সকার:

  • এটি সার্ভার হিসেবে কাজ করে, যা REQ সকার থেকে মেসেজ গ্রহণ করে এবং উত্তর পাঠায়।
  • REP সকার প্রথমে মেসেজ গ্রহণ করে, তারপর উপযুক্ত উত্তর পাঠায়।

REQ-REP উদাহরণ (Python):

# REQ সকার (Client)
context = zmq.Context()
req_socket = context.socket(zmq.REQ)
req_socket.connect("tcp://localhost:5557")

req_socket.send_string("Hello Server")
message = req_socket.recv_string()
print(f"Received reply: {message}")
# REP সকার (Server)
context = zmq.Context()
rep_socket = context.socket(zmq.REP)
rep_socket.bind("tcp://*:5557")

while True:
    message = rep_socket.recv_string()
    print(f"Received: {message}")
    rep_socket.send_string("Hello Client")

ZeroMQ সকার প্রকারভেদের সংক্ষেপে উপসংহার

সকার প্রকারভূমিকাব্যবহার
PUSHমেসেজ পাঠায়, গ্রহণ করতে পারে নাওয়ার্ক লোড ডিস্ট্রিবিউশন
PULLমেসেজ গ্রহণ করে, পাঠাতে পারে নাওয়ার্ক লোড কনসিউমার
PUBমেসেজ পাঠায়, এক বা একাধিক সাবস্ক্রাইবারের কাছেমাল্টিকাস্ট মেসেজিং
SUBমেসেজ গ্রহণ করে, নির্দিষ্ট টপিক সাবস্ক্রাইব করেমাল্টিকাস্ট মেসেজ গ্রহণ
REQক্লায়েন্ট হিসেবে মেসেজ পাঠায় এবং উত্তর প্রত্যাশা করেক্লায়েন্ট-সার্ভার মডেল
REPসার্ভার হিসেবে মেসেজ গ্রহণ করে এবং উত্তর পাঠায়ক্লায়েন্ট-সার্ভার মডেল

উপসংহার

ZeroMQ সকার বিভিন্ন প্রকারভেদে বিভক্ত যা ডিস্ট্রিবিউটেড সিস্টেম এবং নেটওয়ার্ক প্রোগ্রামিংয়ে বিভিন্ন মেসেজিং প্যাটার্ন সমর্থন করে। PUSH-PULL, PUB-SUB, এবং REQ-REP সকারগুলি বিভিন্ন ধরণের মেসেজিং প্রয়োজন মেটাতে কার্যকরী। এই সকার প্যাটার্নগুলো ব্যবহার করে সহজেই মাল্টিকাস্ট মেসেজিং, ওয়ার্ক লোড ডিস্ট্রিবিউশন, এবং ক্লায়েন্ট-সার্ভার মডেল বাস্তবায়ন করা যায়, যা বড় এবং জটিল সিস্টেম তৈরি করতে সহায়ক।

Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...